<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        [v-cloak] {
            display: none;
        }
    </style>
    <script type='text/javascript' src='../js/vue.js'></script>
    <script type='text/javascript' src=''></script>

</head>

<body>
    <!-- 
        Vue组件的三大步骤：
            定义组件
            注册组件
            使用组件
        1、如何定义一个组件：
            Vue.extent(options)创建，其中options和new Vue(options)时传入的options几乎一样，
            但区别：
                （1）不写el
                    所有组件统一由一个vm管理，由vm中的el管理
                （2）data不许写成函数return想要数据
                    避免组件被引用时，数据存在引用关系
        2、如何注册组件：
            1.局部注册：new Vue时传入components选项
            2.全局注册：Vue.component('组件名',组件)
        3、编写组件内容
            <school></school>
     -->
    <div id="root">
        <school></school>
        <hr />
        <student></student>
    </div>
    <hr/>
    <hr/>
    <div id="root2">
        <hello></hello>
    </div>
    <script>
        Vue.config.productionTip = false;


        const school = Vue.extend({
            template: `
                <div>
                    <h2>学校名称：{{schoolName}}</h2>
                    <h2>学校地址：{{address}}</h2>
                    <button @click='showName'>点我提示学校名</button>
                </div>
            `,
            data() {
                return {
                    schoolName: 'CQBZ',
                    address: 'CQ',
                }
            },
            methods:{
                showName(){
                    alert(this.schoolName)
                }
            }
        })

        const student = Vue.extend({
            template: `
                <div>
                    <h2>学生姓名：{{studentName}}</h2>
                    <h2>学生年龄：{{age}}</h2>
                </div>
            `,
            data() {
                return {
                    studentName: 'SONG',
                    age: 18
                }
            }
        })

        const hello = Vue.extend({
            template: `
                <div>
                    <h2>{{name}}</h2>
                </div>
            `,
            data() {
                return {
                   name:'SONG'
                }
            }
        })

        Vue.component('hello',hello)
        new Vue({
            el: '#root',
            // 注册组件，局部注册
            components: {
                school: school,
                student: student
            }
        })

        new Vue({
            el: '#root2'
        })
    </script>
</body>

</html>